With steady growth of access bandwidth, more and more Internet applications start to use streaming audio and video contents. Since the current Internet is inherently a heterogeneous and dynamical best-effort network, channel bandwidth usually fluctuates in a wide range from bit rate below 64 kbps to well above 1 Mbps. This brings great challenges to video coding and streaming technologies in providing a smooth playback experience and best available video quality to the users. To deal with the network bandwidth variations, two main approaches, namely, switching among multiple non-scalable bitstreams and streaming with a single scalable bitstream, have been extensively investigated in recent years.
In the first approach, a video sequence is compressed into several non-scalable bitstreams at different bit rates. Some special frames, known as key frames, are either compressed without prediction or coded with an extra switching bitstream. Key frames provide access points to switch among these bitstreams to fit in the available bandwidth. One advantage of this method is the high coding efficiency with non-scalable bitstreams. However, due to limitation in both the number of bitstreams and switching points, this method only provides coarse and sluggish capability in adapting to channel bandwidth variations.
In the second approach, a video sequence is compressed into a single scalable bitstream, which can be truncated flexibly to adapt to bandwidth variations. Among numerous scalable coding techniques, MPEG-4 Fine Granularity Scalable (FGS) coding has become prominent due to its fine-grain scalability. Since the enhancement bitstream can be truncated arbitrarily in any frame, FGS provides a remarkable capability in readily and precisely adapting to channel bandwidth variations. However, low coding efficiency is the vital disadvantage that prevents FGS from being widely deployed in video streaming applications. Progressive Fine Granularity Scalable (PFGS) coding scheme is a significant improvement over FGS by introducing two prediction loops with different quality references. On the other hand, since only one high quality reference is used in enhancement layer coding, most coding efficiency gain appears within a certain bit rate range around the high quality reference. Generally, with today's technologies, there is still a coding efficiency loss compared with the non-scalable case at fixed bit rates.
Nevertheless, bandwidth fluctuations remain a problem for streaming video in the current Internet. Conventional streaming video systems typically try to address this problem by switching between different video bitstreams with different bit-rates, for example, as described above. However, in these and other existing video coding schemes, the switching points are restricted only to key frames (e.g., typically I-frames) to avoid drifting problems. Such key frames are usually encoded far apart from each other to preserve high coding efficiency, so bitstream switching can only take place periodically. This greatly reduces the adaptation capability of existing streaming systems. Consequently, a viewer may experience frequent pausing and re-buffering when watching a streaming video.
Hence, there is a need for improved method and apparatuses for use in switching streaming bitstreams.